1972C - Permutation Counting - CodeForces Solution


binary search constructive algorithms greedy implementation math sortings

Please click on ads to support us..

Python Code:

def d():
    n, k = list(map(int, input().split()))
    a = list(map(int, input().split()))
    a.sort()
    curr = a[0]
    for i in range(1, n):
        c = min(a[i]-curr, k//i)
        curr += c
        k -= c*i
        if k == 0:
            break
    return (curr*n+(k+sum(x > curr for x in a)))-(n-1)
     
for i in range(int(input())):
    print(d())


Comments

Submit
0 Comments
More Questions

1582C - Grandma Capa Knits a Scarf
492A - Vanya and Cubes
217A - Ice Skating
270A - Fancy Fence
181A - Series of Crimes
1638A - Reverse
1654C - Alice and the Cake
369A - Valera and Plates
1626A - Equidistant Letters
977D - Divide by three multiply by two
1654B - Prefix Removals
1654A - Maximum Cake Tastiness
1649A - Game
139A - Petr and Book
1612A - Distance
520A - Pangram
124A - The number of positions
1041A - Heist
901A - Hashing Trees
1283A - Minutes Before the New Year
1654D - Potion Brewing Class
1107B - Digital root
25A - IQ test
785A - Anton and Polyhedrons
1542B - Plus and Multiply
306A - Candies
1651C - Fault-tolerant Network
870A - Search for Pretty Integers
1174A - Ehab Fails to Be Thanos
1169A - Circle Metro